#ifndef VECTOR3_H_
#define VECTOR3_H_

#include "Header.h"
#include "Matrix.h"

class Vector3
{
public:
	float x, y, z;
    
    Vector3(float x = 0, float y = 0, float z = 0);
    virtual ~Vector3();
    
    virtual void Set(float x = 0, float y = 0, float z = 0);
    virtual void Normalize();
    virtual float Length();
    
    virtual Vector3 operator+(const Vector3 &v);
    virtual Vector3 operator-();
    virtual Vector3 operator*(const float f);
    virtual Vector3 operator*(const Vector3 &v);
    virtual Vector3 &operator*=(const float f);
    virtual Vector3 &operator*=(const Vector3 &v);
    virtual Vector3 &operator+=(const Vector3 &v);
    virtual Vector3 &operator-=(const Vector3 &v);
    virtual Vector3 projection(const Vector3 &v);
};
Vector3 operator*(const Matrix &matrix, const Vector3 &vector);
Vector3 operator-(const Vector3 &vector1, const Vector3 &vector2);

#endif
